package com.shp.service;

import com.shp.pojo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author ZWL
 * @Version: 1.0
 * @create: 2020/2/26 14:19
 */
public interface OrdersService {

    /**
     * 立即购买
     * @param request HttpServletRequest
     * @param orders Orders
     * @param info ResultInfo 响应前台的信息对象
     * @return ResultInfo
     */
    public ResultInfo buyNow(HttpServletRequest request, Orders orders,ResultInfo info);

    /**
     * 根据商品，生成订单
     * @param goodsList List<Good>
     * @return List<Orders>
     */
    public List<Orders> getOrdersByGoods(List<Good> goodsList);

    /**
     * 保存批量订单
     * @param ordersList 订单集合
     * @return 保存成功返回true，否则返回false
     */
    public boolean saveOrders(List<Orders> ordersList);

    /**
     * 保存批量订单，购买者钱包钱数减少，商品数量减少
     * @param ordersList 批量订单集合
     * @param activeUser 购买者
     * @param orderBatch 订单的备注，交易地址，电话
     * @return ResultInfo
     */
    public ResultInfo saveOrdersMul(List<Orders> ordersList, User activeUser, OrderBatch orderBatch,ResultInfo info);

    /**
     * 我买的订单
     * @param userId 用户id
     * @return List<Orders>
     */
    public List<Orders> getMyOrders(Integer userId);

    /**
     * 我卖的订单
     * @param userId 用户id
     * @return List<Orders>
     */
    public List<Orders> getUserOrders(Integer userId);

    /**
     * 删除订单
     * @param userId 用户id
     * @param ordersId 订单编号
     * @return true代表删除成功，false删除失败
     */
    public boolean deleteOrdersByUserAndId(Integer userId, Integer ordersId);

    /**
     * 确认收货
     *
     * @param orders 订单
     * @return true代表成功，false失败
     */
    public boolean setOrdersStatusByUserAndId(Orders orders);

    /**
     * 查询所有订单，便于分页查询
     * @return  List<Orders>
     */
    public List<Orders> getAll();

    /**
     * 根据订单id，查询指定的订单
     * @param id 订单id
     * @return 订单信息
     */
    public Orders getOrders(Integer id);

    /**
     * 修改订单信息
     * @param orders 订单信息
     * @return 修改成功返回true；否则返回false
     */
    public boolean updateOrder(Orders orders);

    /**
     * 查询所有符合条件的订单
     * @param orders 条件
     * @return List<Orders>
     */
    public List<Orders> getOrdersBySelected(Orders orders);

    /**
     * 批量删除订单
     * @param ids 订单编号
     * @return 删除成功返回true；否则返回false
     */
    public boolean deleteOrdersBatch(Integer[] ids);
}
